{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting the mid-circuit states\n", "\n", "Usually, we only see the final results of the execution of our circuit. However, occasionally it is helpful to know how the state of the system evolves during the execution of the circuit, particularly if we are interested in the statevector and the density matrix of the system.\n", "\n", " It is necessary to state that on real quantum computers, it is not necessarily possible to get the mid-circuit states (and the measurements also), so this is an excellent functionality for the emulator.\n", "\n", "To achieve this, we will use barriers supported by Qiskit and OpenQASM standards. We will get the results of the states of the system at the location where the barrier is placed. Also, it is crucial to notice that the barriers divide the circuit for transpilation. Hence, they will behave as a separator for the states and the transpilation process.\n", "\n", "First, we will demonstrate the usage of the barriers. Afterward, we will retrieve the desired states at the given time.\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# For more information see notebooks 2 & 3\n", "from c12_callisto_clients.user_configs import UserConfigs\n", "from c12_callisto_clients.qiskit_back.c12sim_provider import C12SimProvider\n", "import os\n", "user_auth_token = os.getenv(\"C12_TOKEN\")\n", "configs = UserConfigs.parse_obj({\"token\" : user_auth_token})\n", "c12_simulator_provider = C12SimProvider(configs)\n", "c12_simulator_backend = c12_simulator_provider.get_backend('c12sim-iswap')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
     ┌───┐ ░       ░      \n",
       "q_0: ┤ H ├─░───■───░──────\n",
       "     └───┘ ░ ┌─┴─┐ ░ ┌───┐\n",
       "q_1: ──────░─┤ X ├─░─┤ X ├\n",
       "           ░ └───┘ ░ └───┘
" ], "text/plain": [ " ┌───┐ ░ ░ \n", "q_0: ┤ H ├─░───■───░──────\n", " └───┘ ░ ┌─┴─┐ ░ ┌───┐\n", "q_1: ──────░─┤ X ├─░─┤ X ├\n", " ░ └───┘ ░ └───┘" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit import QuantumCircuit\n", "\n", "# For more info about Qiskit see notebook 1 and Qiskit's documentation\n", "circuit = QuantumCircuit(2)\n", "circuit.h(0)\n", "circuit.barrier() # We add a barrier at this position\n", "circuit.cx(0, 1)\n", "circuit.barrier()\n", "circuit.x(1)\n", "\n", "circuit.draw()\n", "# Notice the barrier position in the circuit" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C12 simulation counts: {'00': 12, '01': 5038, '10': 4941, '11': 9}\n" ] } ], "source": [ "# Running the circuit on Callisto\n", "c12_job = c12_simulator_backend.run(circuit, shots=10000)\n", "c12_result = c12_job.result()\n", "c12_counts = c12_result.get_counts()\n", "print(f\"C12 simulation counts: {c12_counts}\")" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c2c3e017-1152-4a15-9d54-a6656e009aa5\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the job_id\n", "job_id = c12_job.job_id()\n", "print(job_id)\n", "\n", "# Getting all the data (transpiled circuit mainly)\n", "orig_circuit = c12_job.get_circuit(transpiled=False)\n", "orig_circuit.draw('mpl')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAACuCAYAAAB3Gi1QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApJklEQVR4nO3dd3wVdfb/8fdNhwAJIdQARgMxBQEpIkUliIpuQFApq6hYQAUXAVmw8d2fC7pir4gu7rIuLOLSRMRCCYpUUXoACTUJSSA0AyH9/v5gjcYkmIR779yZeT0fj32szJ25OTP5nM+ck5m51+F0Op0CAAAAAACm42N0AAAAAAAAoGZo6gEAAAAAMCmaegAAAAAATIqmHgAAAAAAk6KpBwAAAADApGjqAQAAAAAwKZp6AAAAAABMiqYeAAAAAACToqkHAAAAAMCkaOoBAAAAADApmnoAAAAAAEyKph4AAAAAAJOiqQcAAAAAwKRo6gEAAAAAMCmaegAAAAAATIqmHgAAAAAAk6KpBwAAAADApGjqAQAAAAAwKZp6AAAAAABMiqYeAAAAAACToqkHAAAAAMCkaOoBAAAAADApmnoAAAAAAEyKph4AAAAAAJOiqQcAAAAAwKRo6gEAAAAAMCmaegAAAAAATIqmHgAAAAAAk/IzOgAAF2f37t1VXvfo0aP6+OOPNWjQIDVq1KjK28XExNQkNAAAALhZdWpBqWb1ILWgd+NKPWAjx44d0zvvvKNjx44ZHQoAAAAMQD1oPTT1AAAAAACYFE09AAAAAAAmRVMPAAAAAIBJ0dQDNhISEqK+ffsqJCTE6FAAAABgAOpB63E4nU6n0UEAqLnqfuJpTfCJpwAAAN6JWhBcqQdsJD8/X4cOHVJ+fr7RoQAAAMAA1IPWQ1MP2EhKSor69OmjlJQUo0MBAACAAagHrcfP6ABQntMplRQaHUX1+PhLDofr3o9jALONAXLAe3PA6ZQKio2OwnsF+Hrv740ccA1y4MLIAdex+7nQW+cAWB9NvRcqKZSS3jQ6iupJGC35Brju/TgGMNsYIAe8NwcKiqWJc42OwntNHSwFemE1QA64DjlwYeSA69j9XOitcwCsj9vvAQAAAAAwKZp6AAAAAABMygtvNgLgLvHx8dq1a5fRYQAAAMAg1IPWw5V6AAAAAABMiqYesJEDBw5oyJAhOnDggNGhAAAAwADUg9ZDUw/YSG5urrZu3arc3FyjQwEAAIABqAeth6YeAAAAAACT4oPyLGTrvlUaPz2hzLKggGA1bxit3h3uVv/uf5Kvr3V/5XbffzAG7L7/gEQeAHbPAbvvP+yJEW1BPdsNVpfYRDnl1MmcTC37/kNN/3ScDh/dpbF3vG90eG5n9/0HY8Du+w9I5AFg9xyw+/7DXmjqLSiqWXv17ji09N99u43UAy/F6vONM3Rfn+cUWqehgdG5n933/0IiIiI0depURUREGB2KW9l9DNh9/wGJPADsngN23/8LsUs9aCc8U28DtQKCFdOyi5xOp44c32d0OB5n9/3/tdDQUPXr10+hoaFGh+JRdh8Ddt9/QCIPALvngN33/9fsWg9aGU29TWT8b/KqV7uBwZEYw+77/7MTJ05o9uzZOnHihNGheJzdx4Dd9x+QyAPA7jlg9/3/mZ3rQavi9nsLyivM1emz2XI6zz9D9Om66UpJ36zLW3RW84atjQ7P7ey+/xeSkZGhKVOmqH379goLCzM6HLex+xiw+/4DEnkA2D0H7L7/F2KXetBObNHUZ2dn64UXXtDChQuVnp6uhg0batCgQZoyZYqGDx+u2bNn6+9//7sefPBBo0N1idnLJ2v28slllnWP76/Rt71rUESeZff9B2PA7vsPSOQBYPccsPv+w14s39Rv27ZNN954o7KyshQcHKy4uDilp6fr1Vdf1cGDB3X48GFJUrt27QyO1HX6XPWAEtoNUXFJkQ5m7tBHSS/o5JksBfrXKl3nr/8eKIccmnT3x6XLfso9oeEvx2tE4su6vsNdRoTuElXZ/4KifI16vaMSrrxTd17/VOnyFz8aplNnsvT8g58bETpchBwgB2piz9o5+mHpyzqeniz/wGC1bHODug95QfXCLzE6NNQAeVB95IC1cC78/f3fvn+1nvrg5nLbFhUXqKSkWF++WOzJkIEas/Qz9dnZ2UpMTFRWVpYmTJigzMxM/fDDD8rKytLkyZO1YMECbdmyRT4+PmrTpo3R4bpMRINW6hDdW51j+mhgz/GafP8S7T68QW8seKR0nTG3TdeOA6u1cvOc0mVvLRyl+Et7mHoCl6q2/wF+gZow5EPNWfm89h3ZKklas2OR1u/6VOMGfmBU6HARcoAcqK6tX72tL6bdKd+AWrp26Gu6ss8YHd6xTB8/201nTh4xOjzUAHlQPeSA9XAu/P39v+Kya/Tpc2fK/O+fE35UveBw3XvT5Au8O+BdLN3Ujx49WqmpqRo3bpymTp2qOnXqlL729NNPKyYmRkVFRYqOjlatWrUu8E7mFnfJ1bq+w1AlbZmj5EPrJUn1ghto3MAP9PaiR5V9+oi+2TZP2/at0pjbphscretVtP+S1Lp5Bw3qOUEvfnSPjp1K0+vzH9KfBryj8JBmBkbrXsHBwerevbuCg4ONDsWjyAFy4ELO5RzXmo+fVKPIDrrj6VVqe/3Duqr/M+o/4QudPZWh9fP+z+gQ4QLkQeXIAXvgXFjxHPBrBUX5evbD29QmskeZu3esxq71oJVZtqlPTk7W3Llz1ahRI02eXP4vbQ6HQx07dpRU/tb7AwcOqF+/fqpbt67q16+ve+65R8ePH/dI3O5yV+9J8vHx1b++nFS6rEvsLbq27UBNnTNUby0YqXEDZ6hesDU/DbSi/ZekO3s9JT/fAD3y+pVqF9VTCe2HGBShZ0RGRmrGjBmKjIw0OhSPIwfIgcrs/+ETFeadUbsbR8vH95en0hpf1kkRl1+rvRs+VnFRgYERwlXIg4qRA/bBubDiOeBnb8x/WAWFefrz4JmeDczD7FwPWpVlm/rZs2erpKREQ4cOVe3atStcJzAwUFLZpj4nJ0cJCQlKS0vTnDlz9P7772v16tVKTExUSUmJR2J3h4jwVkpoN0Q/7F2u7ftXly5/qO8rSj+eos4xN6tL7B8MjNC9Ktt/X18/tbm0h06fzdZNne4zMELPKC4u1pkzZ1RcbL9nxMgBcqAymfs2SpKaRncr91rT1t1UkJejE0d2ezosuAF5UDFywD44F1a8/5K08Ns3tWHXEj07bJGCAiruHazCzvWgVVm2qV+xYoUkKSEhodJ10tLSJJVt6t9//32lp6dr0aJFSkxM1MCBAzV79mytX79eixcvdm/QbvbH65+Wj8NH//rql9voagUEq2nYZbq0yRUGRuYZFe3/jgNr9MXGD3Rr90c1bfFjyi88Z2CE7rd792517txZu3fbszgjB8iBipw9mS5JqhvWvNxrdf637MyJNI/GBPchD8ojB+yFc2H5/d+SkqQZn03UM0M/VpOwSOOC8xC714NWZNlPvz906JAkVXpbSX5+vjZs2CCpbFO/ZMkS9ejRQy1btixd1q1bN0VGRurTTz9V//79qx1Lp06dlJmZWeX1A/xq6f1H91b757SL6qllLzkrff2SxrFu+xTP1tGtVVDkuiKoJseguvt/ruCsXpp7r+6/+W/q2/URPT79Os1Y+oRG3fpGjWJ29TGoqmHDhlV53YyMDEnS0qVLtXnz5ipvN3PmzGpGdfE8MQZciRwwLgd+j69/LQ2YUvmxLMzPPb+eX2C51/wCgiRJRQW57gnOC0S3bq1iL2xiPXUudGUekAPmZPcccCUzngszTxzUlFmDNDzxJbVvVfnFwKowQy0o1aweNKIWtJsmTZpo06ZNNdrWsk392bNnJUl5eXkVvj5r1iydPn1aDRo0UEREROny5ORkDRw4sNz6cXFxSk5OrlEsmZmZSk9Pr/L6Qf7mu+Un48gR5RW67oTviWPw3uJxalw/Uv26jZTD4dCfB83Uw6+3V482A9Quqme138/Vx6CqcnOr/jN/zoe8vLxqbVed8esqZssDcsC4HPg9foEXPpb+/3u9uChffgFlPzS1qOB8ceZn4Vsxj2QcUVG+9/3ePDUHuDIPyAFzsnsOuJLZzoV5Bbn6y8z+6hrXT/27P3rR72eGWlCqWT1oRC2IqrNsU9+kSRPl5ORo06ZN6tSpU5nXUlNT9eSTT0qS2rZtW+a1kydPKjQ0tNz71a9fXykpKTWOpToC/Mz3SfxNmzVz+V9m3em73V9o1da5en/cNjkcDklSs/AoPXDzC3p57n16b9w21Q6qW633dPUxqKrKPjOiIkFBQaX/X53tfv2HL08xWx6QA8blwO/x9b/wsQyuf35855xIU/0mrcu8dubE+SKmTgW3JVtFs6bNvPYqpbu5Og/IAXOycw64mtnOhau3z9f+jK1Kz/5Rq7bOLff6B+OT1ah+ywq2rJgZakGpZvWgEbWg3VS3Z/w1h9PprPz+FBMbOXKk3n33XbVo0ULLly9XdHS0JGn9+vW6++67dejQIRUWFmrMmDF67bXXSrcLCAjQxIkTy31i/l133aVNmzZpz549bo+9uEBKetPtP8alEkZLvgGuez+OQdVV53monTt36o477tC8efMUHx9f5e1iYmJqEtpFMdsYIAeMy4Hfk18kTSxfq5XaseoDrZjxoG4YMVNx195b5rV5U3rq6MHv9dD04/L188Kdc4Gpg6VAL/wTPzngOuTAhZEDrmP3c6EZakGpZvWgEbUgqs6yH5T3xBNPqH79+kpNTVV8fLyuuOIKtWrVSl27dlVsbKx69OghqfzX2dWvX18nT54s936nTp1SWFiYR2IH3CU6Olpr1qwp/SMXACmq463yC6ytrV+9qZLiotLlWfs3KX3PN2rdZZBlmxlAIgcAu6EetB7LNvUtW7bU6tWrdcsttygoKEiHDh1Sw4YNNWPGDH3yySelf9H6bVMfGxtb4bPzycnJio2N9UjsgLv4+/srLCxM/v7+RocCeI1adcPVbeDzOnrwB817rqe2r3hPGz95Tote7KPa9Rqr6+1/NTpEwK3IAcBeqAetx7JNvSTFx8frs88+U05Ojn766SetW7dODzzwgE6ePKmMjAz5+fkpLi6uzDaJiYn69ttvlZqaWrps/fr1OnjwoPr27evpXQBc6vDhwxo5cqQOHz5sdCiAV7myz2O66ZFZKsrP1dezxmjz56+qZZveGvSXtaoTxnOEsD5yALAP6kHr8cIniNxv+/btks4/GxIYWPbrW0aMGKG33npL/fv317PPPqu8vDxNmDBBV111lW699VYjwgVcJicnR0lJSRo1apTRoQBeJ6b7XYrpfpfRYQCGIQcAe6AetB5LX6mvzM9N/W9vvZekevXqaeXKlWratKmGDBmiBx98UN26ddOSJUvk42PLwwUAAAAA8FK2vlJfUVMvSVFRUVqyZIknQwIAAAAAoNps3dT/9jvq7eDrrf/VlpSVeqTfa3pu9hAdykpWoH9thdVtosdun64mYZFGhwi4FTkAAEBZnBs5BjA3Wzb1a9euNToEw6zduUi9O94jSbqlywhdFXOzHA6HFq15W6/NG6GpI74yOELXy8k9qRGvXqGCwjyFhzRXYXG+Mo/v142dhmnMHe8ZHZ5HNW7cWBMnTlTjxo2NDsUw5IC9cwD2RR4AlbPjufG37HQMqAetx5ZNvZVdqGh5dMDb2nlwjcYP+qf8/QLUJfaW0u1iW16thatfNy5wN6pbu756tb9TwbVCdef1T+m7PV/q46SptiziwsPDNWzYMKPDcCtyoDxyACAPYG+cGzkGv2aHetBuaOot5kJFy6Y9Xynukm7y9wsot92ib9/U1XHW/cq+lCNbdPu1YyVJe9O+V1Sz9sYGZJDTp09r3bp16tq1q0JCQowOxy3IgYqRAwB5APvi3Mgx+DU71IN2Q1NvQZUVLWt3LlL3NgPKrf+fFc8rPXuvHrt9uifD9Kj9R7aUHoe9ad+rW7w9v54wLS1NY8eO1bx58yw9iZMD5ZEDAHkA6xo77RodztpV4Wvvjt2sRqEtLH9u5BhUnV3qQTuhqbegiooWp9OpTXu+1PA/vFhm3f+uelnf7ligF0csV1BAbQOidb/s0+lyOHzUoF5TSdL+zG26q/czBkcFdyIHyiIHAPIA1vbayNW/u47Vz40cA9gZX7xuMRUVLZc2vUK7UzeqZeNY1QqsU7ruvK9fVdKWOZo6fJnq1Ao1KGL3S0nfXOYWy+DAelq8dppxAcGtyIHyyAGAPIC9cW7kGMDauFJvMZUVLfWCG6hbfP/S5cdOpem9JY+radhlGj89QZIU4Beot0Zv8HDE7nd1XKKujkss/fe0Md8bGA3cjRwojxwAyAPYG+dGjgGsjabeYiorWh58OV4vPZxUurxhaHMte8np8fhgrKCgIMXGxiooKMjoUNyGHAAAoCzOjRyDX7NDPWg3NPU2MWP8TqNDgBeIiorSggULjA7DEOQAAABlcW605zGwcz1oVTxTDwAAAACASdHUAzaSnJystm3bKjk52ehQAAAAYADqQeuhqQdsxOl0qrCwUE6ntZ8VAwAAQMWoB62HZ+q9kI+/lDDa6Ciqx8ff9e9n92Ngd2YbA+QAOQDXIgdgd+SA+Y4BcwCMQlPvhRwOyTfA6CiMxTGA3ceA3fcfIAdgd+QAxwCoKm6/BwCgitKSV+mNoQ4lfzPT6FAAQ5ADAOB9uFIP2EhUVJQWL16sFi1aGB0KAAAADEA9aD009YCNBAUFqXXr1kaHAZhWRMy1GvWPc/Lx48FJ2BM5AJgf9aD1cPs9YCPp6el65plnlJ6ebnQogCk5fHzkFxAkHx9fo0MBDEEOAOZHPWg9NPWAjZw6dUrz58/XqVOnjA4FMKXfPk/sdDq1+YvXNevJtpr2YF1Ne6COZo6L0lfvDVNRwTlJ0vK/P6i37wtSUUFe6ftk7tuoN4Y6NO3BuiouKixdnr77G70x1KGdX/+jdNnWZdO08IUbNeNPEXrr3gD9fVRTfTFtqH46drBcfG8Mdeir94bp8I7lmvuXq/XO/bX1/sjGWvXhaBXknXHPQYGtkAOA+VEPWg9NPQAANbRx0RR9M2us6oVHqvvgqbrmzlfUustgHT3wvQrzz0qSmsf3UnFhvo78uKZ0u9SdK+Vw+Kgw74yy9m8ss1ySWsT1Kl22+fNXVDuksa68aYwShr2j6C6DtO/7hfr42W46l3O8XExHD/6gJa/1V5PWXdXjjy8rIuZabf3qLS1+OVHOkhJ3HQrYFDkAAMbjmXoAAGpo36aFCouIU7/HF5dZ3n3w86X//XNzkrpzhVq2uV6SlJa8Ui3b3qSsfRuVunOFmkV3P79O8kqFNLpM9RpGlm5/1/Pb5B8UXOb9L+3QTwtf6K2dX3+gTokTyrx2PHW7EscsVFSn/pKkdjeM1NcfPqYtX72pPevmKKb7XS7Zd0AiBwDAG3ClHgCAGgoMDtWZE2lK3/NtpesEhzZRWLNYpSavkCQVFxXoyN41atnmBjWPS1DqzvPLC/NzlbVvg5r/6gqlpNJmxllSovzc0zqXk62Gl7RTQO0QZe7bUO7n1W96eWkz87NOfZ+QdL4BA1yJHAAA43GlHrARHx8fde7cWT4+/D0PcIXug/6mT1/rr3mTr1FwaFNFxPbUpe1uUasuA+XnH1i6XvP4Xtq+Yrryc08r+/BWFeXnqkVcL/n5B+mbWWNUmJ+rIz9+q+KiArWIv77Mz0jduVIbFv5Vmfs2qLgwr8xr+WdPlosprFlsuWXB9ZsqsHaoTh/d56I9B84jBwDzoR60Hpp6wEZKSkr03XffqYRnCgGXaNKqi4a9kqJD279S2q4kpSUn6cd1c7Rh0V91x6TVCg5pLOn87cfblr2j9F1f6+jBH1SrbrjCW7aVn3/Q+auWP35b+ixx87iE0vfP3LdRC6feqNDGrdR98AsKaXipfANqyeFw6PO3h1T8fLDDUWGsTjklVfwaUFPkAGA+1IPWQ1MPAMBF8A8KVqvOA9Sq8wBJUvI3M7Xs/fu0bfk0db39WUnnmxSHw0epO1fo6MEf1DyulxwOh+o3u1x16kcodecKpe5cqQbN40ubIEnas26OnCXFuvXPnyuk0aWlywvzzlZ4hVKSTqQnl1t29mSGCnJPK6TRZa7cdUASOQAARuOeCwAAauhcTna5ZY0u7ShJyj9zonRZUHB9hbdspwNblypr/8Yytxc3j++l/d9/omOHNqtFXNnbjn/5LnBnmeXfLX5eTmfFV1hOZuzRvk2LyizbtGSqJCmq04Aq7RdQVeQAABiPK/UAANTQvyfEqkmrq9X4sqtUJyxCuaeztCPp7/Lx9dPlv/mE7RbxvfTD0lf+99+/NC4t4npp97f/lnS+ufm1qE4DtPnz1/TJS7eoTcII+foF6PCOZcpO3aZadcMrjKlBiyv05btDFZ8wXKGNWyttV5JSNs5TRMx1urzrH125+wA5AABegCv1gI2EhISob9++CgkJMToUwBKuvPlx5eee1tZlb2nlPx7WtmXvqOEl7XXHpNVq2urqMuv+3MTUbdBSoY2jyi13+Piqecx1ZbZpFt1df3hsvvwDg7Vu/iStX/D/5BdQS7c//bX8Ast+xdfPGkV2UOLYRcrYu1ar//O40nd/o3Y3PKp+j38qBx+KBBcjBwDzoR60HofT6XT+/moAvNXu3bvd/jNiYmLc/jMAd8kvkibONToKz3hjqEOx19yrGx+aWeVtpg6WArlvz9LIgQsjB2B21ILgz5WAjeTn5+vQoUPKz883OhQAAAAYgHrQemjqARtJSUlRnz59lJKSYnQoAAAAMAD1oPVwsxEAr+R0SiWFRkdRdT7+lX41MoAaMNscIDEPwLXIAfMdA+YA1zLb718ybgzQ1APwSiWFUtKbRkdRdQmjJd8Ao6OA3T02yzofk2O2OUBiHvAG5ICxXJ0DZjsGzAGuZbbfv2TcGOD2ewAAAAAATIqmHgAAAAAAk+L2e8BG4uPjtWvXLqPDAAAAgEGoB62HK/UAAAAAAJgUTT1gIwcOHNCQIUN04MABo0MBAACAAagHrYemHrCR3Nxcbd26Vbm5uUaHAgAAAANQD1oPTT0AAAAAACZFUw8AAAAAgEnx6fcALGPrvlUaPz2hzLKggGA1bxit3h3uVv/uf5KvL9MeYGXMA7A7u+eA3fcf9hwD1tobABcUERGhqVOnKiIiwuhQ3Kpnu8HqEpsop5w6mZOpZd9/qOmfjtPho7s09o73jQ4PgAcwD8Du7J4Ddt//C6EetN4YoKkHbCQ0NFT9+vUzOgy3i2rWXr07Di39d99uI/XAS7H6fOMM3dfnOYXWaWhgdAA8gXkAdmf3HLD7/l8I9aD1xgDP1AM2cuLECc2ePVsnTpwwOhSPqhUQrJiWXeR0OnXk+D6jwwFgAOYB2J3dc8Du+/9r1IPWGwM09YCNZGRkaMqUKcrIyDA6FI/L+N/kXa92A4MjAWAU5gHYnd1zwO77/zPqQeuNAVs09dnZ2Ro/fryioqIUFBSkFi1a6PHHH9e5c+c0dOhQORwOzZgxw+gwAbhIXmGuTp/N1qkzx3QgY7veXDBKKembdXmLzmresLXR4QHwAOYB2J3dc8Du+w97jQHLP1O/bds23XjjjcrKylJwcLDi4uKUnp6uV199VQcPHtThw4clSe3atTM4UgCuMnv5ZM1ePrnMsu7x/TX6tncNigje7LvFf9PRgz/o6IHv9dOxA6obfonuf/2g0WHhIjEPVB05YE12zwG77z/sNQYs3dRnZ2crMTFRWVlZmjBhgiZNmqQ6depIkqZMmaJJkybJz89PPj4+atOmjcHRAnCVPlc9oIR2Q1RcUqSDmTv0UdILOnkmS4H+tUrX+eu/B8ohhybd/XHpsp9yT2j4y/Eakfiyru9wlxGhwwBrP35KQXXC1DCyg/JzTxkdDlyEeaDqyAFrqkoObN+/Wk99cHO5bYuKC1RSUqwvXyz2ZMguxRyAqoyBgqJ8jXq9oxKuvFN3Xv9U6fIXPxqmU2ey9PyDnxsRerVZ+vb70aNHKzU1VePGjdPUqVNLG3pJevrppxUTE6OioiJFR0erVq1aF3gnwBqCg4PVvXt3BQcHGx2KW0U0aKUO0b3VOaaPBvYcr8n3L9Huwxv0xoJHStcZc9t07TiwWis3zyld9tbCUYq/tAcncZsZ9uo+PTT9uG57Ypnq1G9mdDhwEeaBqiMHrKkqOXDFZdfo0+fOlPnfPyf8qHrB4br3pskXeHfvxxxQOerBX8ZAgF+gJgz5UHNWPq99R7ZKktbsWKT1uz7VuIEfGBV6tVm2qU9OTtbcuXPVqFEjTZ5cflJyOBzq2LGjpLK33qelpWn06NHq1q2bateuLYfDoYMHD3oqbMCtIiMjNWPGDEVGRhodikfFXXK1ru8wVElb5ij50HpJUr3gBho38AO9vehRZZ8+om+2zdO2fas05rbpBkcLTwtpdJnRIcADmAcqRw7YQ0U58FsFRfl69sPb1CayR5mrllbAHPAL6sGyOdC6eQcN6jlBL350j46dStPr8x/Snwa8o/AQ8/yR07JN/ezZs1VSUqKhQ4eqdu3aFa4TGBgoqWxTn5KSorlz5yo0NFTXXXedR2IFPKW4uFhnzpxRcbF5b6erqbt6T5KPj6/+9eWk0mVdYm/RtW0HauqcoXprwUiNGzhD9YKt9WmoAH7BPAC7qygHfu2N+Q+roDBPfx4807OBeQhzwHnUg+Vz4M5eT8nPN0CPvH6l2kX1VEL7IQZFWDOWbepXrFghSUpISKh0nbS0NEllm/prr71WWVlZWrp0qQYPHuzeIAEP2717tzp37qzdu3cbHYrHRYS3UkK7Ifph73Jt37+6dPlDfV9R+vEUdY65WV1i/2BghADcjXkAdldZDkjSwm/f1IZdS/TssEUKCqj4gpjZMQecRz1Yfgz4+vqpzaU9dPpstm7qdJ+BEdaMZT8o79ChQ5JU6W0l+fn52rBhg6SyTb2Pj+v/ztGpUydlZma6/H0BSRo2bFiV1/35+0iXLl2qzZs3V3m7mTNnVjOqixfgV0vvP7rXpe/5x+ufVtKWOfrXV/+nlx9OkiTVCghW07DLdGmTKy7qvVtHt1ZB0TlXhAkX8/WvpQFTXDuWrCS6dWsVF3rf2HXHHCDZcx4gBy6MHJC2pCRpxmcT9dwDS9UkLLLG7+3qHKAWqJrq1IJSzepBq9SCUsVjYMeBNfpi4we6tfujmrb4MU2P2lLmA/Wq6mLGQJMmTbRp06YabWvZpv7s2bOSpLy8vApfnzVrlk6fPq0GDRooIiLCrbFkZmYqPT3drT8D9pWbm1vldX/Oh7y8vGptZ8T4DfKv/lWCdlE9tewlZ6WvX9I41m2f5Jtx5IjyCqt+TOE5foHWvOLkKkcyjqgo3/vGbk3mAIl5oCLkwIXZPQcyTxzUlFmDNDzxJbVvVfkdrlXh6hygFqia6tR0Us3qQbPUglL1x8C5grN6ae69uv/mv6lv10f0+PTrNGPpExp16xvV/tlGjQHLNvVNmjRRTk6ONm3apE6dOpV5LTU1VU8++aQkqW3bth6JBXCXyj4zoiJBQUGl/1+d7dz9h6+KBPiZ6xspmjZr5pVX6HD+KiUq16xpM6+9Smk23joPkAMXZuccyCvI1V9m9lfXuH7q3/3Ri34/V+eA2eYBo+aA6tR0Us3qQSvXgu8tHqfG9SPVr9tIORwO/XnQTD38env1aDNA7aJ6Vuu9LmYMXEzPaNmmvnfv3tq7d6+ef/559erVS9HR0ZKk9evX6+6779apU6cklb313l1qehsFUBXVeR5q586d+sc//qFbbrlF8fHxVd5uypQpNQntohQXSElvevzH1tjeH/fKN8DoKFCR/CJp4lyjo/BeP+7dq0AvrAbMNgdI3jsPkAMXZuccWL19vvZnbFV69o9atbX8IPlgfLIa1W9Z5fdzdQ6YbR4wag6o7rPxNakHrVoLfrf7C63aOlfvj9smh8MhSWoWHqUHbn5BL8+9T++N26baQXWr/H5GjQEvnMJc44knntBHH32k1NRUxcfHKyYmRufOndO+ffvUt29ftWjRQklJSR5p6gFvER0drTVr1qhu3apPTnbwyiOrjA4BgMGYB2BHN3S8Wzd0vNvoMLyCneYA6sFfdI7po0WTT5Vbfmv3Ubq1+yjPB1RDlm3qW7ZsqdWrV2vChAn65ptvdOjQIcXHx+vJJ5/U/fffX3oLCU097MTf319hYWFGhwF4lV3f/ls52ec/XDX3p2MqKSrQxkXnr0gE1g5Vuxsv/pZUwJuRA4C9UA9aj2WbekmKj4/XZ599Vm75iRMnlJGRIT8/P8XFxRkQGWCMw4cP64UXXtATTzyhli2rfjsdYGU7V32g9N1fl1m2bt7576+tG34JDQ0sjxwA7IV60Hos3dRXZvv27ZKkmJgYBQYGlnt93rx5kn55Fv7zzz9Xw4YNFRkZWe5D9wAzycnJUVJSkkaNMs/tRIC73fHMKqNDAAxFDgD2Qj1oPbZu6iu79X7gwIFl/j1y5EhJ0r333mvIdzQCAAAAAFARmvoKOJ2Vf68hAAAAAADewtZNvSe+ox6A9/t663+1JWWlHun3mp6bPUSHspIV6F9bYXWb6LHbp6tJWKTRIQJwI+YA2A1jvjyOCczMlk392rVrjQ4BMETjxo01ceJENW7c2OhQvMranYvUu+M9kqRbuozQVTE3y+FwaNGat/XavBGaOuIrgyME4E7MAbAbxnx5djomdq0Hc3JPasSrV6igME/hIc1VWJyvzOP7dWOnYRpzx3tGh3dRbNnUA3YVHh6uYcOGGR2Gx11oEn90wNvaeXCNxg/6p/z9AtQl9pbS7WJbXq2Fq183LnAALsEcALthzJfHMfmFXevBurXrq1f7OxVcK1R3Xv+UvtvzpT5Ommr6hl6iqQds5fTp01q3bp26du2qkJAQo8PxmAtN4pv2fKW4S7rJ3y+g3HaLvn1TV8f1NSBiAK7EHAC7YcyXxzH5hV3rQUlKObJFt187VpK0N+17RTVrb2xALkJTD9hIWlqaxo4dq3nz5llqEh877RodztpV4Wvvjt2sRqEtKp3E1+5cpO5tBpTb7j8rnld69l49dvt0t8UNwDWYA4Dy7DbmmQeqzqr1YFXsP7Kl9Pe+N+17dYu/1diAXISmHoDpvTZy9e+uU9Ek7nQ6tWnPlxr+hxfLrPvfVS/r2x0L9OKI5QoKqO2OkAG4EHMAUJ7dxjzzAH5P9ul0ORw+alCvqSRpf+Y23dX7GYOjcg0fowMAAHeraBK/tOkV2p26US0bx6pWYJ3Sded9/aqStszR1OHLVKdWqEERA3Al5gDYDWO+PI4JUtI3l7ndPjiwnhavnWZcQC7ElXoAllfZJF4vuIG6xfcvXX7sVJreW/K4moZdpvHTEyRJAX6Bemv0Bg9HDMCVmANgN4z58jgmuDouUVfHJZb+e9qY7w2MxrVo6gEbCQoKUmxsrIKCgowOxaMqm8QffDleLz2cVLq8YWhzLXvJ6fH4ALgXcwDshjFfHsfkF3atB62Mph6wkaioKC1YsMDoMLzGjPE7jQ4BgIGYA2A3jPny7HhMqAeth2fqAQAAAAAwKZp6wEaSk5PVtm1bJScnGx0KAAAADEA9aD009YCNOJ1OFRYWyum09rNiAAAAqBj1oPXwTD0Ar+TjLyWMNjqKqvPxNzoCVCbAV5o62OgovFeAr9ERVMxsc4DkvfMAOXBh5IDruDoHzHYMvHUOMCuz/f4l48YATT0Ar+RwSL4BRkcBK3A4pEDOdqbDHOA65IA5kQMcA7vj91913H4PAAAAAIBJ8XdbwEaioqK0ePFitWjRwuhQAAAAYADqQeuhqQdsJCgoSK1btzY6DAAAABiEetB6uP0esJH09HQ988wzSk9PNzoUAAAAGIB60Hpo6gEbOXXqlObPn69Tp04ZHQoAAAAMQD1oPTT1AAAAAACYFE09AAAAAAAmRVMPAAAAAIBJ0dQDNhIeHq7hw4crPDzc6FAAAABgAOpB63E4nU6n0UEAAAAAAIDq40o9AAAAAAAmRVMPAAAAAIBJ0dQDAAAAAGBSNPUAAAAAAJgUTT0AAAAAACZFUw8AAAAAgEnR1AMAAAAAYFI09QAAAAAAmBRNPQAAAAAAJkVTDwAAAACASdHUAwAAAABgUjT1AAAAAACYFE09AAAAAAAmRVMPAAAAAIBJ0dQDAAAAAGBS/x9GzmdIIaTkLgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpiled_circuit = c12_job.get_circuit(transpiled=True)\n", "transpiled_circuit.draw('mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting the mid-circuit states" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mid-circuit states are stored in the result object obtained from the job execution. The values can be accessed directly from the Result instance using the following command:\n", "\n", "\n", " `result_obj.data()['sv{NUM}']` for the state vector\n", " `result_obj.data()['dm{NUM}']` for the density matrix\n", "\n", "The `{NUM}` presents the cardinal number of the barrier starting from one." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzwAAAHQCAYAAABk728+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABi2klEQVR4nO3deViU1f//8dewyKYgiiIuCO57kjtq7pBrZZa7X7XsY2VmtlomoJalZmVFWZqmpWllm7upaBqpLba4SxLigqIm5MI6vz/8MTmyCMPAjOPzcV1eF3Puc9/nfc+cceY959znNhiNRqMAAAAAwAE52ToAAAAAACgpJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPADszu+//65Ro0YpODhY7u7uKlu2rG6//XbNnDlT586dM9Xr3LmzOnfubJMYg4KCNHLkSNPjEydOKDIyUnv27LFJPEVhMBgUGRlp0b7R0dFatGhRrvL4+HgZDIY8twEAYEsutg4AAK71wQcf6JFHHlH9+vX19NNPq1GjRsrIyNBPP/2k9957T7Gxsfryyy8lXf3ybStffvmlvL29TY9PnDihqKgoBQUFqXnz5jaLq6RFR0fLz8/PLNmTpICAAMXGxqp27dq2CQwAgHyQ8ACwG7GxsXr44YfVo0cPffXVV3JzczNt69Gjh5588kmtW7fOVNaoUaMbHjMrK0uZmZlmx7KGkJAQqx7vZufm5qa2bdvaOgwAAHJhShsAu/Hyyy/LYDDo/fffzzNBKVOmjPr162d6fP2UtpxpVTNnztT06dMVHBwsNzc3bdmyRZK0c+dO9e3bVxUrVpS7u7tq166tCRMmmPYfOXKkgoKCcrUbGRkpg8FgVnbtlLaYmBi1atVKkjRq1CgZDIZCTRs7deqU/ve//6l69eoqU6aMgoODFRUVpczMTElSRkaGKleurOHDh+fa959//pGHh4cmTpxoKktISNCwYcNUuXJlubm5qWHDhnrttdeUnZ1dYBx5nZ8kLVq0SAaDQfHx8aZz3rt3r7Zu3Wo6x5znK78pbdu3b1e3bt1Urlw5eXp6KjQ0VKtXr86znS1btujhhx+Wn5+fKlasqP79++vEiRMFxg4AwI0wwgPALmRlZWnz5s1q0aKFatSoUaxjzZ07V/Xq1dPs2bPl7e2tunXrav369erbt68aNmyoOXPmKDAwUPHx8dqwYUOxY7/99tu1cOFCjRo1SpMnT1bv3r0lSdWrV893n1OnTql169ZycnLSlClTVLt2bcXGxmr69OmKj4/XwoUL5erqqmHDhum9997TO++8YzaFbtmyZbpy5YpGjRolSTpz5oxCQ0OVnp6uadOmKSgoSKtWrdJTTz2luLg4q0z/+/LLLzVgwAD5+PiYjlfQyNnWrVvVo0cPNWvWTAsWLJCbm5uio6PVt29fLVu2TAMHDjSr/+CDD6p3795aunSpjh07pqefflrDhg3T5s2bix07AODWRcIDwC4kJyfr0qVLCg4OLvax3N3dtX79erm6uprKunfvrsDAQO3cuVPu7u6m8pyEoTi8vb3VpEkTSVLt2rULNbUrMjJS58+f1969exUYGChJ6tatmzw8PPTUU0+Zrl8aNWqUXn/9dS1fvlxjxowx7b9o0SK1aNFCTZs2lSTNmTNHx48f186dO9W6dWtJUnh4uLKysvTee+9pwoQJqlevXrHOMyQkRB4eHvL29i7UOT733HPy9fVVTEyMypYtK0nq06ePmjdvrqeeekr333+/2cjSnXfeqblz55oenzt3Ts8884xOnTqlKlWqFCt2AMCtiyltABxOv379zJKdQ4cOKS4uTg888IBZsmNLq1atUpcuXVS1alVlZmaa/vXs2VPS1dERSWratKlatGihhQsXmvbdv3+/du3apdGjR5vKNm/erEaNGpmSnRwjR46U0Wgs9VGSixcvaufOnRowYIAp2ZEkZ2dnDR8+XImJiTp48KDZPtdOV5SkZs2aSZL+/vvvkg8YAOCwSHgA2AU/Pz95enrq6NGjxT5WQECA2eMzZ85IKniKWWlLSkrSt99+K1dXV7N/jRs3lnR1xCvH6NGjFRsbqwMHDkiSFi5cKDc3Nw0ePNhU5+zZs7nOW5KqVq1q2l6azp8/L6PRWKSYKlasaPY4Z7rc5cuXSyhKAMCtgCltAOyCs7OzunXrprVr1yoxMbFYycn1F+BXqlRJkpSYmFjgfu7u7kpLS8tVfm3yYS1+fn5q1qyZXnrppTy35yQFkjR48GBNnDhRixYt0ksvvaQlS5bo7rvvlq+vr6lOxYoVdfLkyVzHybno38/PL99Ycka90tLSzK7JKc55+/r6ysnJyeKYAACwFkZ4ANiNSZMmyWg0asyYMUpPT8+1PSMjQ99++22Rj1uvXj3Vrl1bH374YZ4JTY6goCCdPn1aSUlJprL09HStX7/+hm0UdTSiT58++vPPP1W7dm21bNky179rEx5fX1/dfffdWrx4sVatWqVTp06ZTWeTrl7/s2/fPv3yyy9m5YsXL5bBYFCXLl0KPG/p6g1fr5XXc+3m5laoc/Ty8lKbNm20cuVKs/rZ2dn6+OOPVb169WJfUwQAQGGQ8ACwG+3atdO7776r7777Ti1atFB0dLS2bt2q7777TrNmzVKjRo304YcfWnTsd955R3///bfatm2rxYsXKyYmRosXL9bQoUNNdQYOHChnZ2cNGjRIa9as0cqVKxUWFqasrKwbHr927dry8PDQJ598opiYGP30008FLqk8depUubq6KjQ0VO+++642b96sNWvWKDo6Wn369Mk1GjV69GidPHlS48aNU/Xq1dW9e3ez7U888YSqVaum3r1764MPPtCGDRv0+OOPKzo6Wg8//HCByUWvXr1UoUIFPfDAA/rqq6+0atUqDRgwQMeOHctVt2nTpvrtt9+0fPly7d69W3/88Ue+x50xY4bOnj2rLl266PPPP9c333yjXr166c8//9Ts2bPzXAobAABrI+EBYFfGjBmjn376SS1atNCrr76qsLAw3X333Vq2bJmGDBmi999/36LjhoeHa9u2bQoICND48eN15513aurUqfL39zfVCQ4O1tdff61//vlHAwYM0NNPP6377rtPI0aMuOHxPT099eGHH+rs2bMKCwtTq1atCow1ICBAP/30k8LCwjRr1izdeeedGj58uD788EM1b97cbLqadHWVuRo1aigxMVH/93//Jycn8/++K1WqpB9++EFdu3bVpEmT1KdPH61fv14zZ87UW2+9VWDs3t7eWrduncqVK6dhw4Zp7NixatKkiV544YVcdaOiotSpUyeNGTNGrVu3Vt++ffM9bqdOnbR582Z5eXlp5MiRGjRokC5cuKBvvvkm15LUAACUFIPRaDTaOggAAAAAKAmM8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcloutA3Bk2dnZOnHihMqVK8cN9gAAQIkyGo1KTU1V1apVc92rK0dWVpYyMjJKOTLAulxdXeXs7Fzo+iQ8JejEiROqUaOGrcMAAAC3kGPHjql69epmZUajUadOndI///xjm6AAKytfvryqVKlSqEEFEp4SVK5cOUlX/+Px9va2cTQAAMCRpaSkqEaNGqbvH9fKSXYqV64sT09PZp7gpmU0GnXp0iWdPn1akhQQEHDDfUh4SlDOfybe3t4kPAAAoFRcn8xkZWWZkp2KFSvaKCrAejw8PCRJp0+fVuXKlW84vY1FCwAAABxYzjU7np6eNo4EsJ6c/lyYa9JIeAAAAG4BTGODIylKfybhuQW0aNFCBoNBBoNBTk5OmjBhQr51x40bZ6p77b958+ZZ3P6gQYPk6uoqg8EgT09Pvf322/nWfeONN/Jsf82aNRa3j//Yui/Yi+joaAUHB8vd3V0tWrTQ999/n2/dmJiYPJ+HAwcOlGLEKCn0BfvBZwWAksI1PA6uZ8+e+uWXX9SuXTsNHz5cU6ZM0ZtvvqlOnTrpnnvuyXe/+fPnKzg42PS4Xbt2FrX/+OOPa/ny5RoxYoTuu+8+vfjii3rsscfUokWLAo+5bt06s4vQGjRoYFH7+I+t+4K9WL58uSZMmKDo6Gi1b99e8+bNU8+ePbVv3z4FBgbmu9/BgwfNrsWrVKlSaYSLEkRfsB98VgAoSQaj0Wi0dRCOKiUlRT4+Prpw4YLNFi1wdnaWj4+Pzp07ZyozGAyqWrWqjh8/nqv+uHHj9M477+i3335Ts2bNit1+2bJlVbNmTe3du9dU5ubmpttvv12xsbG56r/xxht64oknFB8fr5o1axa7ffzH1n3BXrRp00a333673n33XVNZw4YNdffdd2vGjBm56sfExKhLly46f/68ypcvX4qRoqTRF+wHnxXWkd/3jitXrujo0aOm0cxrjXmjlIPMxwcTLNtv0aJFGjVqVJ7bnnzySY0bN07BwcFauHChRo4caXF814qOjpanp2ehj2cwGPToo48WOGpZGiIjIxUVFSVH+epfUL++HlPaHNi5c+eUnZ2tTp06mZX7+fkpKSmpwH1vu+02GQwGubq66pFHHrGo/X///VcXL15Unz59zMobNmyo/fv3F7hvnTp15OzsrAoVKmjOnDkWtY//2Lov2Iv09HT9/PPPCgsLMysPCwvTDz/8UOC+ISEhCggIULdu3bRly5aSDBOlgL5gP/isgDUsXLhQsbGxZv/Gjx+vgIAAxcbGqnfv3lZrKzo6WosWLbLa8UrLgw8+mOcPCLcCprQ5sN27d0uS6tata1Zevnx5JScn57nPbbfdprZt26p3795KTU3VBx98oHfffVeurq568803i9T+oUOHJEm1atUyK69cubL27duX5z7169fX8OHDFR4erosXL2ru3Ll68skn5erqqscee6xI7eM/tu4L9iI5OVlZWVny9/c3K/f399epU6fy3CcgIEDvv/++WrRoobS0NC1ZskTdunVTTEyM7rjjjtIIGyWAvmA/+KyANTRp0kQtW7bMc1vbtm1vuP+lS5du6lXssrKylJmZKTc3t1zbcs6tevXquW5IWxw303PGCM8t4PpVLAoayhwzZoxiY2M1efJkvfrqqzp37pzKlCmj9957z6rt57eyRs+ePbV48WINHTpUDz30kP78809VrlxZL730ksXt4z+27gv2oih9sn79+hozZoxuv/12tWvXTtHR0erdu7dmz55dGqGihNEX7AefFSgJ8fHxMhgMZiMykZGRMhgM+uWXXzRgwAD5+vqqdu3akqS//vpLgwYNUtWqVeXm5iZ/f39169ZNe/bskSQFBQVp79692rp1q2mxjKCgoELFMm/ePNWrV09ubm5q1KiRPv30U7PtZ86c0SOPPKJGjRqpbNmyqly5srp27ZprMZWcc5o5c6amT5+u4OBgubm5acuWLQWeW8626y1fvlzt2rWTl5eXypYtq/DwcP36669mdUaOHKmyZcvqjz/+UFhYmMqVK6du3boV6rztAQmPA2vVqpWk/349y3HhwoUb3qDpWjVq1FB6enqR269Xr54kKS4uzqz8zJkzphtGFUazZs10/vz5IreP/9i6L9gLPz8/OTs75/oF//Tp07l+6S9I27ZtdfjwYWuHh1JEX7AffFbAGnJGOK79dyP9+/dXnTp19Nlnn5l+zOvVq5d+/vlnzZw5Uxs3btS7776rkJAQ/fPPP5KkL7/8UrVq1VJISIhp6tyXX355w7a++eYbzZ07V1OnTtXnn3+umjVravDgwfr8889NdXKusY2IiNDq1au1cOFC1apVS507d1ZMTEyuY86dO1ebN2/W7NmztXbtWrNFO/I6t7y8/PLLGjx4sBo1aqQVK1ZoyZIlSk1NVceOHXONsKanp6tfv37q2rWrvv76a0VFRd3wvO0FU9ocWIUKFeTk5KStW7ealScnJ6tq1aqFPs7x48fl4lL0rlK2bFl5eXlp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55fnF3Anp9xfc5cvX6527drJy8tLZcuWVXh4uH799ddc9Xbu3Km+ffuqYsWKcnd3V+3atTVhwgSzOtu3b1e3bt1Urlw5eXp6KjQ0VKtXrzars2jRIhkMBm3ZskUPP/yw/Pz8VLFiRfXv318nTpwwq5uRkaFnnnlGVapUkaenpzp06KBdu3YV6fnIzs7WSy+9pMDAQLm7u6tly5batGmTWZ0jR45o1KhRqlu3rjw9PVWtWjX17dtXf/zxh1m9mJgYGQwGLVmyRE8++aSqVasmNzc3HTlyRCNHjlTZsmX1xx9/KCwsTOXKlVO3bt0kXZ3SFhQUZHYso9Go6OhoNW/eXB4eHvL19dWAAQP0119/mdXr3LmzmjRpom3btik0NFSenp4aPXp0kZ6DvJDwAAAA4KbUrl077dy5U+PHj9fOnTuVkZGRb92XX35ZgwcPVqNGjbRixQotWbJEqamp6tixo/bt22eqt379enXs2FEJCQmaM2eO1q5dq8mTJyspKclUZ+vWreratasuXLigBQsWaNmyZSpXrpz69u2b51S6Bx98UK6urlq6dKlmzpypmJgYDRs2zKzOmDFjNHv2bI0YMUJff/217r33XvXv31/nz58v9PPx9ttva926dXrjjTf08ccfy8nJST179lRsbKypzokTJ1SxYkW98sorWrdund555x25uLioTZs2OnjwYK5jTpo0SQkJCXrvvff07bffqnLlypKk9PR09evXT127dtXXX3+tqKiofOP63//+pwkTJqh79+766quvFB0drb179yo0NNTseZWkkydPatiwYRoyZIjWrFmjRx55pNDnnx+mtN3kxrxh6wik596NtHUIxbrY0ZHYQ3/4YIKtI5Am/d8Fm7Y/4yMfm7aP/9i6L0j0hxz2cHE8nxWO55VXXtGBAwf01ltv6a233pKrq6tatWqlvn37aty4cSpbtqwk6dixY4qIiNC4ceM0d+5c0/49evRQ3bp1FRUVZUpUHn30UQUGBmrnzp1yd3c31R01apTp7+eee06+vr6KiYkxtdGnTx81b95cTz31lO6//34ZDAZT/TvvvNOs3XPnzumZZ57RqVOnVKVKFR04cEAfffSRnnjiCdNUvB49esjf319Dhw4t9PORlZWljRs3muIODw9XUFCQpkyZoo0bN0qS7rjjDt1xxx1m+/Tu3VuNGzfWvHnzNGfO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nn76aXXo0EF79uzRvffea7VgAQAAAKAoLF6WesyYMapYsaLOnDmjgIAAjR49Wr/++quio6O1Z88eSdK9996ryMhIK4UKAAAAAEVjccJTt25dPfvss2Zlb731lqZMmaK//vpLNWvWVJUqVYodIAAAAABYyuKEJz+VKlVSpUqVrH1YAAAAACgyi6/hAQAAAAB7Z/EIT61atQpVz2AwKC4uztJmAAAAAMBiFic82dnZMhgMucovXLigf/75R5IUEBCgMmXKWBwcAAAAABSHxQlPfHx8gdsmTpyopKQkbdy40dImAAAAAKBYSuQanqCgIC1fvlznz5/XCy+8UBJNAAAAAMANldiiBa6ururRo4dWrFhRUk0AAAAAQIFKdJW2S5cu6dy5cyXZBAAAAADkq8QSnm3btmnZsmWqX79+STUBAAAAAAWyeNGCrl275lmemZmp48ePKz4+XkajUZMnT7Y4OAAAAAAoDosTnpiYmDzLDQaDfH191aNHDz3xxBMKDw+3tAkAAAAAKJZi3YcHAAAAAOyZxQlPjtOnT+v48ePKzs5WtWrVVKVKFWvEBQAAAADFZtGiBWlpaZo1a5bq1aungIAAtWzZUq1bt1a1atXk5+enJ554osAbkwIAAABAaShywnPs2DG1atVKzz33nI4cOaKAgAC1bt1arVq1UkBAgM6dO6c333xTLVu21HfffWfa78SJE9yTBwAAAECpKlLCk5GRoV69eunPP//U4MGDtX//fiUmJio2NlY//vijEhMTtX//fg0dOlTnzp3TXXfdpaNHj+rIkSPq0KGDDhw4UFLnAQAAAAC5FOkannnz5mnv3r2KiIhQREREnnXq16+vJUuWqF69eoqIiNCQIUMUHx+vc+fOqUWLFlYJGgAAAAAKo0gjPCtWrFCdOnU0ZcqUG9adPHmy6tatq507dyo9PV3r1q1T7969LQ4UAAAAAIqqSAnPvn37FBYWJoPBcMO6BoPBVHfnzp3q0qWLxUECAAAAgCWKlPD8+++/8vHxKXR9b29vubi4qE6dOkUODAAAAACKq0gJT+XKlXXkyJFC14+Li1PlypWLHBQAAAAAWEOREp527dpp7dq1OnXq1A3rnjp1SqtXr1aHDh0sDg4AAAAAiqNICc/YsWP177//6p577lFycnK+9c6ePat77rlHly5d0v/+979iBwkAAAAAlihSwtOlSxeNGTNGO3fuVMOGDTV58mRt3rxZhw8f1uHDh7V582a98MILatiwoXbu3KkxY8aoc+fOFgW2e/du9erVS76+vvLy8lLr1q21dOnSQu9/+vRpzZgxQwMGDFBwcLAMBsMNF1sICgoy1bv+39ixYy06DwAAAAC2U6T78EhSdHS0vL299frrr2vGjBmaMWOG2Xaj0SgnJyc99dRTubYVVkxMjMLDw1WmTBkNGjRIPj4+WrlypYYOHar4+Hg9//zzNzzGvn379Pzzz8tgMKhu3bry9PTUpUuXbrifj4+PJkyYkKu8ZcuWlpwKAAAAABsqcsLj7OysWbNm6X//+58WLlyo2NhY0zU9VapUUWhoqEaOHGnxymyZmZl68MEHZTAYtG3bNoWEhEiSIiIi1K5dO0VEROi+++5T3bp1CzxOw4YNtXXrVoWEhKhcuXJq0KCBDh48eMP2y5cvr8jISItiBwAAAGBfipzw5KhTp45eeukla8YiSdq8ebPi4uI0atQoU7IjSeXKldOLL76oQYMGaeHChXr55ZcLPI6/v7/8/f2tHh8AAACAm4fFCU9JiYmJkSSFhYXl2pZTtnXr1hJrPy0tTR999JGOHz8uX19fhYaG6rbbbiux9gAAAACUHLtLeA4fPixJeU5Z8/X1lZ+fn6lOSTh16pRGjhxpVnbnnXdqyZIl8vPzK3DftLQ0paWlmR6npKRIkjIyMpSRkSFJcnJykrOzs7KyspSdnW2qm1OemZkpo9FoKnd2dpaTk1O+5bgq5/mVJFdXV2VnZysrK8tUZjAY5OLikm95fq+HtV6na+OTJBeXq2+9zMzMQpUX/pxcC36iSkFhz7UkXydbu/Y5uHX6nv2ek61lZGTwOtmJ6z+LHe39BCBv9vFpcI0LFy5Iurp4QF68vb2VmJhYIm2PHj1anTp1UuPGjeXm5qZ9+/YpKipKa9euVb9+/bRjx44CV3qbMWOGoqKicpVv2LBBnp6ekqTAwECFhITo999/V0JCgqlO/fr11aBBA+3atUtnzpwxlTdv3lw1a9bUtm3blJqaaipv164dN3W9xpo1ayRd/ZDp3bu3kpOTFRsba9perlw5de3aVceOHdOePXtM5ZUqVVJoaKgOHz5sdo2XtV+nDRs2mH3wdenSRR4eHqa4c/Tq1UuXL1/Wli1bTGVFO6e7ivbElQDrn1PRXyeps7VPq0iufQ5unb5nn+dkD9asWcPrJKlJUZ+4EpDzfDrq+6lq1arFeHYAx2UwXvsThh0ICwvTxo0bdfjw4TwXPqhdu7YSExPNRlIKI2fRgqKebnZ2tjp16qTt27dr1apV6t27d7518xrhqVGjhpKTk+Xt7S3J+r+gjXmjSKdTIp57N9LWISjwzxdMf98Mv3SW1K+Cj7xj+xGe6EdtP8Iz5cEbr8hYkqbO9zT9fav0PXs9p+dHpsjWps735HWSlNDE+tf9FlXOZ4Wjvp8uXrwoHx8fXbhwwfS9A4AdjvDkjOzkjPRcLyUlJd/Rn5Lg5OSkUaNGafv27dqxY0eBCY+bm5vc3Nxylbu6usrV1fyLqLOzs5ydnXPVzW8Khr1MzbBX1z+/Tk5OeQ7v51ee3+thrdfp+vgsKS/qOdlKSZ5TUV8nWynKuTpi37O3c7K1a+PidbKt62NyxPcTgNzs51vS/5dz7U5e1+mcP39eycnJN1yS2tpyrt0pzH18AAAAANgPu0t4OnXqJOnqdS/XyynLqVNadu7cKUkKCgoq1XYBAAAAFI/dJTzdunVTrVq1tHTpUrOL91JTUzVt2jS5uLiYraKWnJysAwcOKDk5uVjt7tu3T//880+u8u3bt2vOnDlyc3NT//79i9UGAAAAgNJldxeGuLi4aP78+QoPD1fHjh01ePBgeXt7a+XKlTp69KimT5+uevXqmeq//fbbioqKUkREhCIjI82OdW1idPLkyVxls2fPNk1XW7FihWbOnKlu3bopKChIbm5u+vPPP7VhwwY5OTnpvffeU2BgYImdNwAAAADrs7uER7q6zOP27dsVERGhFStWKD09XY0bN9a0adM0dOjQQh/no48+KrAsMjLSlPB06dJF+/fv1y+//KKtW7fqypUr8vf318CBA/XEE0+odevWxT8xAAAAAKXKLhMeSWrdurXWrl17w3qRkZG5RnZyFGUJ6k6dOpX6tUEAAAAASpbdXcMDAAAAANZCwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDAAAAwGGR8AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPLjlRUdHKzg4WO7u7mrRooW+//57W4d0yxo0aJBcXV1lMBjk6empt99+29YhwUboC7AnfE4ANzcSHtzSli9frgkTJuiFF17Qr7/+qo4dO6pnz55KSEiwdWi3nMcff1zLly/XkCFD9O2336p+/fp67LHHFBsba+vQUMroC7AnfE4ANz8SHtzS5syZowceeEAPPvigGjZsqDfeeEM1atTQu+++a+vQbjkLFixQo0aN9NFHH6lPnz769ddfVaZMGU2cONHWoaGU0RdgT/icAG5+JDy4ZaWnp+vnn39WWFiYWXlYWJh++OEHG0V1a/r333918eJF9enTx6y8YcOG2r9/v42igi3QF2BP+JwAHAMJD25ZycnJysrKkr+/v1m5v7+/Tp06ZaOobk2HDh2SJNWqVcusvHLlyrp06ZItQoKN0BdgT/icABwDCQ9ueQaDweyx0WjMVYbSwWuBHPQF2BP6I3BzI+HBLcvPz0/Ozs65fqU7ffp0rl/zULLq1asnSYqLizMrP3PmjDw8PGwREmyEvgB7wucE4BjsNuHZvXu3evXqJV9fX3l5eal169ZaunRpkY6RnZ2tt99+W82aNZOHh4cqVaqk+++/X4cPHy7RdnFzKFOmjFq0aKGNGzealW/cuFGhoaE2iurWVLZsWXl5eWn16tVm5fv371fDhg1tFBVsgb4Ae8LnBOAY7DLhiYmJUYcOHfT9999rwIABevjhh5WcnKyhQ4fq5ZdfLvRxxo4dq8cee0xZWVl67LHH1KtXL33zzTdq1aqV9u3bV2Lt4uYxceJEzZ8/Xx9++KH279+vJ554QgkJCRo7dqytQ7vlPPDAA9q7d69GjRqlVatW6fbbb1d6erpmz55t69BQyugLsCd8TgA3PxdbB3C9zMxMPfjggzIYDNq2bZtCQkIkSREREWrXrp0iIiJ03333qW7dugUeZ8uWLfrggw/UsWNHbdy4UW5ubpKkESNGqEePHnr44Ye1detWq7eLm8vAgQN19uxZTZ06VSdPnlSTJk20Zs0a1axZ09ah3XLefPNNJSUlacmSJVq0aJE8PDw0d+5ctW/f3tahoZTRF2BP+JwAbn52N8KzefNmxcXFaciQIaakQ5LKlSunF198UZmZmVq4cOENj/PBBx9IkqZPn25KdiSpW7duCg8P17Zt20yrAVmzXdx8HnnkEcXHxystLU0///yz7rjjDluHdMv69NNPlZmZKaPRqEuXLumxxx6zdUiwEfoC7AmfE8DNze4SnpiYGEnKteb9tWXXjswUdBwvL688fxEMDw/PdRxrtQsAAADAftjdlLacBQXymjrm6+srPz+/AhcdkKSLFy+ahp2dnZ1zbc859rXHsUa7aWlpSktLMz2+cOGCJOncuXPKyMiQJDk5OcnZ2VlZWVnKzs421c0pz/lFM4ezs7OcnJzyLU+/UmBIpSI1K+3GlUrY2bNnTX+7uroqOztbWVlZpjKDwSAXF5d8y/N7Paz1OuW8/jlcXK6+9TIzMwtVXthzSr/ieqOnqsSdPVu4cy3J1ykt3bb3azl79r9zvVX6nr2eU1p6imzt7NlMXifZ12eFo76fLl68KElmsQOww4QnJ0nw8fHJc7u3t7cSExOLfYxr61mr3RkzZigqKipXeXBwcIH73ewW2zoASfJ7xdYR4P9bPMnWEdje65/aOgLYE/qDHblFPitSU1Pz/T4D3IrsLuG5mU2aNEkTJ040Pc7Ozta5c+dUsWJFblBWgJSUFNWoUUPHjh0zJaO4NdEXcC36A3LQFwrHaDQqNTVVVatWtXUogF2xu4Qn5xeJa0dfrpWSknLDXy0Kc4xr61mrXTc3N7MFEiSpfPnyBe6D/3h7e/NBBkn0BZijPyAHfeHGGNkBcrO7RQvyur4mx/nz55WcnHzDpaG9vLwUEBCgo0ePms2HzZHX9TrWaBcAAACAfbG7hKdTp06SpA0bNuTallOWU+dGx7l48aJ27NiRa9v69etzHcda7QIAAACwH3aX8HTr1k21atXS0qVLtWfPHlN5amqqpk2bJhcXF40cOdJUnpycrAMHDig5OdnsOA899JAkafLkyUpPTzeVb9q0SevXr9cdd9yhevXqWdwurMfNzU0RERG5pgPi1kNfwLXoD8hBXwBQHAajHa5duGXLFoWHh8vNzU2DBw+Wt7e3Vq5cqaNHj2r69Ol64YUXTHUjIyMVFRWliIgIRUZGmh1nzJgxmj9/vho1aqTevXsrKSlJy5cvl7u7u3744Qc1atTI4nYBAAAA2D+7G+GRpC5dumj79u3q0KGDVqxYoejoaFWsWFEff/xxkZKOefPmae7cuTIYDJo7d65Wr16tvn37ateuXbmSHWu2CwAAAMA+2OUIDwAAAABYg12O8AAAAACANZDwAAAAAHBYJDwAAAAAHBYJDwAAAACHRcIDm8hZKyM7O1usmwEAAICSQsIDmzAYDJIkJycn098AIP33g0hWVpaNIwEAOAKWpUapi4uL048//qjY2Fg5OTmpefPmqlOnjgIDAxUQEMCdtG8hWVlZJL0AAKBEkfCgVC1btkxTpkxRXFycWbmnp6dCQkLUu3dv9evXz3RjWKPRyJfhW4DRaJTRaJSTE4POt7pVq1bpt99+06+//qqAgADdfvvtqlevnoKCguTv7y8XFxdbh4hSkpWVJWdnZ1uHAcABkPCg1CQkJKht27YqW7asnn76abVv314HDx7UX3/9pT179uiHH37Q0aNHVaNGDY0fP16PPvqo3N3dSXoc0PHjxzV+/Hjde++96tGjhypVqmTalp2dLUkkP7eYf/75R9OnT9ecOXPk6uqqjIwM07by5curdevWuvvuu3X33XerSpUqNowUJS07O9vs/V/YH0T4rACQHxIelJrJkyfr3Xff1eLFi9W7d2+zbefPn9f+/fu1adMmLV68WHFxcRo+fLgWLFjAL7oOKDIyUlOnTpWHh4eCg4PVvXt39e7dWx06dJCHh4epXnZ2trKzs+Xi4qKYmBhduXJFd955pw0jR0mZOXOmoqKi1KtXL02cOFGVK1fWb7/9piNHjmjXrl364YcfdOrUKTVr1kyTJ0/WgAEDbB0ySsi7776rmJgYjRgxQp06dVLZsmVN2/hBBIAlSHhQajp37qxLly5p7dq1qlixojIzM+Xk5JTrg2vPnj2aPHmy1q5dq6lTp+qFF16wUcQoKW3atNGff/6pO+64Q1u3btWVK1fk4uKi1q1b684779Sdd96pli1bmupfunRJgwcP1qpVq3Tx4kW5u7vbMHqUhKCgIDVp0kSLFi2Sn5+f2bakpCT9/vvvWrVqlebPn6/Lly/rrbfe0qOPPmqjaFGSgoOD9ffff8vNzU233XabwsLC1KtXL7Vp08ZsBCczM1MuLi66cuWKli9frgYNGqhNmzY2jByAvSLhQam4fPmyhg8frp07d+qXX35RpUqVcs3PvnY6QnJystq3b68KFSpo+/btXNjuQI4fP64uXbqoXLly+vnnn3Xq1Cl9/fXXWrp0qb7//ntJko+Pjzp27Kjw8HANGDBAx44dU79+/dSyZUt98803Nj4DWNuBAwfUqlUrPfbYY3r55Zcl/bdS27Xv+/T0dMXExGj8+PE6deqUVq1apQ4dOtgkZpSMvXv3qmnTpmrRooV8fX313XffSZK8vLzUvn179erVS2FhYWrQoIFpn+3bt6t3797q0qWLvvrqKxtFDsCeMSaMUuHh4aHWrVvr+PHjio6OlqR8k53MzEz5+fmpffv2SkxM1F9//UWy40BOnz6tf/75R7Vr15Yk+fv763//+5+2bt2qffv2KTIyUlWrVtWqVav02GOPqXXr1nr44Yd16tQpPfTQQzaOHiXBaDSqfPnypsVMMjMzzf5PyLmGo0yZMgoLC9Mbb7yhlJQUU4IMx/HHH39IkoYMGaINGzbowIEDeuWVV1SnTh1t2LBBEyZMUNeuXTVkyBAtWbJE58+f165du5SamqoHH3zQxtEDsFeM8KBUGI1GpaSkaNCgQVq/fr3uuusuPfLII2rTpo28vb1N9TIyMuTq6qqUlBQ9/PDD2rJli06cOGHDyGFtJ0+e1OzZsxUaGqp7771XUu6LjY1Go7Zv367PPvtMn332mZKSklS+fHmdO3fOVmGjhLVt21Z79+7VihUr1LNnT7NtOf0j52L28+fPq3Xr1mrWrJm++OILG0WMkvD+++9r7NixWr16da5+sHv3bi1btkyff/65EhMTJUl169ZVSkqKrly5ovPnz9siZAA3AUZ4UCoMBoN8fHz0/PPPq2XLlvr66681evRoPfnkk/r444/122+/6dKlS3J1dZUkffrpp1q9erXuvvtu2wYOqwsICNC0adPUo0cPU9n1yY7BYFDHjh01d+5c04jg4MGDSz1WlLyc39zmzp0rHx8f9e7dW0888YR27dqlK1euSPqvf+Ss3HbgwAFdunRJ1atXt03QKBFGo1HNmjXThAkTVK9ePbNySWrVqpXmzJmjQ4cO6dtvv9WIESOUlJSkpKQkDRs2zFZhA7gJMMKDEpfXUqFvv/22Fi5cqN9//12urq4KDAxU5cqV5evra5qqEhISomXLlqlOnTo2ihzWlldfyMrKkqR877fxzDPPaPbs2frpp590++23l3iMsI2srCx9/PHHmjRpkk6dOqVGjRopLCxMoaGhatSokRo0aCAnJycdP35cTz31lD777DPt2rWLPuGA/v33X5UpU0ZlypTJte36/0PGjRun6Oho/fLLL2revHkpRgngZkLCg1KR8yEVHx+vGjVqyNnZWWfPntXGjRv13XffadeuXdq7d6+MRqPq1Kmj5s2ba+bMmQoKCrJ16LCynL5w/PhxBQQEmK3Sd/3KfSdOnFDPnj2VkJDAdJVbxJkzZ/T2229rxYoVOnTokDw9PVWtWjWVLVtWFSpU0IEDB3TmzBmNHj1a77zzjq3DhQ3k/B8SFxengQMH6sKFCzp8+LCtwwJgx0h4UKLS09P1/fff64MPPtCRI0dkNBrl4eGhFi1aaPDgwWrbtq2kqx9gZ8+e1ZEjR9SgQQOVL1/eVM6CBY4hv77QvHlz3X///brjjjty7XPp0iWtW7dOZcqUUZ8+fWwQNUqL0WhUdna2nJ2ddfnyZR0+fFi7d+/Wjh07tHPnTh04cECVKlVSYGCgHnjgAQ0bNkxeXl62Dhs2tGrVKvXr109PP/20Xn31VVuHA8COkfCgRL366qt6+eWXlZqaqoYNG0qS9u/fb9oeHByshx9+WIMHD1a1atUk5b7LNhzDjfpCzZo1NXbsWA0fPlxVq1Y1lZP03rqys7N15coVlSlTRhcuXNCpU6fUuHFjW4eFElbY93xSUpLWrVunvn37qkKFCqUQGYCbFQkPSsxff/2lpk2bqlWrVlq8eLHc3Nzk7++vkydPavXq1Vq5cqXWrVsnSQoNDdWrr76q9u3b2zhqlISi9oVZs2apXbt2No4aJeny5ctKSEhQYGCgPDw8zLZlZ2fLYDCYLUt97RdgfhRxLAX1hRu5/n5uAJAXEh6UmIiICM2bN09Lly5V165dJeX+4rJ3717NmTNHy5YtU7Vq1fTxxx9zp2wHVJy+wAiPY3rllVf0xRdfqH///mrbtq3q168vf3//XPfnkv5bpe3ChQsqV64cyY6DKUxfuN6FCxdUtmxZkh0AhULCgxJz77336tdff1VMTIwCAwOVmZkpFxcXs7n6Od577z098sgjGjx4sD755BMbRo2SQF/A9apXr64TJ07I2dlZPj4+Cg0NVVhYmNq0aaNatWqpYsWKZvUvXryoN998U5mZmXrxxRdJgh1IcfrC5MmTSYAB3JCLrQOA4woJCdGXX36p1NRUSZKLy9XuZjAYTF9wc6aujB07VjExMfr+++91+PBh1a1b12Zxw/roC7jWoUOHdOHCBbVr105DhgzRxo0bFRsbq1WrVikwMFCdO3dW9+7dFRISomrVqql8+fL6448/NGPGDHXv3p1kx4EUty+Q7AAoDP6nQInJmbo0dOhQbd68Wenp6bnq5Nw9Xbp6x+zk5GRdunSpVONEyaMv4FqHDh3SlStXFBYWpkcffVRvvvmmlixZooiICNWsWVNffPGFRo0apSFDhigqKkrr16/XypUrdfHiRT3wwAO2Dh9WRF8AUBqY0oYSk5WVpWeffVZz5sxRgwYN9Oijj2rAgAHy9/fPVff8+fN64okntGbNGp0+fdoG0aIk0Rdwrc8//1z333+/Pv30U91///2m8oyMDP3999/67bff9P333ysmJkb79++Xq6urjEaj3NzcdO7cORtGDmujLwAoDSQ8KHHz5s3TrFmz9Ndff6lq1aq655571LNnT9MNSMuXL6+33npLb7zxhh599FHNnj3b1iGjhNAXIF1djODAgQNyd3dXcHBwngtTXLx4UYcOHdLBgwe1cOFCbdy4UePGjdPcuXNtFDVKAn0BQGkg4UGJMxqNOnLkiD744AN9+umnSkxMlCRVrlxZrq6uOnnypLKzszVo0CDNnDlT1atXt3HEKCn0BdxIXl94x48fr7fffls///yzQkJCbBQZSht9AYC1kPCgVF28eFG7du3SN998oxMnTuj06dPy9vbWwIED1b9/f7m7u9s6RJQS+gIKknOvnfj4eN111106f/68EhISbB0WbIC+AKC4WKUNpcrLy0tdunRRly5dlJGRIVdXV1uHBBuhL6AgOatvHT9+XBkZGXrkkUdsHBFshb4AoLgY4QEA2C2j0ajExERVqFBBXl5etg4HNkRfAGApEh4AAAAADov78AAAAABwWCQ8AAAAABwWCQ8AAAAAh0XCAwAAAMBhkfAAAAAAcFgkPAAAAAAcFgkPAAAAAIdFwgMAAADAYZHwAAAAAHBY/w9rBScn3YwWrQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit.quantum_info import Statevector\n", "from qiskit.visualization import plot_histogram\n", "\n", "\n", "statevector_1 = Statevector(c12_result.data()['sv1'])\n", "statevector_2 = Statevector(c12_result.data()['sv2'])\n", "statevector_final = Statevector(c12_result.get_statevector())\n", "\n", "\n", "probability_1 = statevector_1.probabilities_dict()\n", "probability_2 = statevector_2.probabilities_dict()\n", "probability_final = statevector_final.probabilities_dict()\n", "\n", "\n", "labels = ['First barrier', 'Second barrier', 'Final']\n", "plot_histogram([probability_1, probability_2, probability_final], legend = labels, title=\"Circuit evolution\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A different way to get the mid-circuit state vector and density matrix is by using the methods `get_mid_density_matrix()` and `get_mid_statevector()` from the `C12SimJob` class.\n", "\n", "These methods return `DensityMatrix` and `Statevector` instances, respectively." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Statevector([0.5000015+0.j, 0.4999985+0.j, 0. +0.j, 0. +0.j],\n", " dims=(2, 2))\n", "DensityMatrix([[0.5000015 +0.00000000e+00j, 0.49998362-1.11419524e-06j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0.49998362+1.11419524e-06j, 0.4999985 +0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0. +0.00000000e+00j, 0. +0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0. +0.00000000e+00j, 0. +0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j]],\n", " dims=(2, 2))\n" ] } ], "source": [ "# Attention! job is the instance obtained from the search, so it doesn't have any results stored, so we need to call result() function\n", "# see notebook 3 for more information\n", "c12_job.result()\n", "statevecotor_1 = c12_job.get_mid_statevector(1)\n", "density_matrix_1 = c12_job.get_mid_density_matrix(1)\n", "\n", "print(statevector_1)\n", "print(density_matrix_1)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# If we try to get the results from the non-existing barrier we will get None as a result\n", "print(c12_job.get_mid_statevector(15))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualization of the states" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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odP0ivNNLuTiiy9WYGCg7rnnHo0dO7baZeLj42v3QQwhjDSQiqauOLnIZrMpKChIgYGBlcucPn1ay5Yta5DtX3HFFerQoYP27NmjWbNmNcg24J/8vXfXr1+vQYMG6frrr9eaNWu4lLcRqgivP/+3tyxLL774olvW3bVrVz399NNasmSJdu3aVTnPbrdXu6fDZrNV6cNPPvlEW7duVWxsrNN4qeqem9DQUN10003KyspSly5dfDJcE0bc4LPPPqs82/vo0aNatWqVMjMz9dvf/rYyjQ4YMEBz587VkCFDdO+99+ro0aN68sknG/QX4fPPP6/+/furX79+Gj58uNq0aaNjx45p37592rVrl1577bU6r3vHjh06cOCAJKmoqEiWZVXexfLaa691+msD3qux9e6HH36oQYMGKTo6WlOnTq3yl/CVV15ZeYUD/Fffvn0VEhKiu+++W5MnT9aZM2e0cOFC/fjjj3Va3zvvvKMFCxZo0KBBuuSSS2RZllatWqXjx4+rb9++lctdddVV2rhxo95++221bt1azZs31xVXXKHbbrtNjz32mKZPn64bb7xRX375pWbOnKn4+HinK4maN2+uuLg4vfnmm7r55pvVokULRUREqH379nrmmWd0/fXXq1evXvrTn/6k9u3b68SJE9q/f7/efvtt/fvf/67399agzJ4/69uqO9s7PDzcuvrqq625c+daZ86ccVo+IyPDuuKKKyy73W5dcskl1uzZs63Fixdbkqzs7OzK5eLi4qwBAwZU2V7FVQevvfZajfN+fkWCZVnWnj17rLvuusuKjIy0goODrejoaKtPnz7WokWLqnyO7du31/qzDxs2rMYz3X9+dju8U2Pt3YqrLWp6/bIGmHOhf9vzXU3zww8/VLuun/fq22+/bXXt2tVyOBxWmzZtrAcffNB67733qvRBba6m+eKLL6y7777buvTSS60mTZpY4eHhVo8ePawlS5Y4Lbd7926rZ8+eVmhoqCWp8irE4uJia9KkSVabNm0sh8NhXXPNNdaaNWuq3fb//u//Wt26dbPsdrslyenqnOzsbGvEiBFWmzZtrODgYKtVq1ZWUlKS9fjjj5+3fm9gs6xf3LUIAADAg7iaBgAAGEUYAQAARhFGAACAUS6HkQ8++EADBw5UTEyMbDZbjfca+LlNmzYpISFBDodDl1xyiRYtWlSXWgEA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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from qiskit.visualization import circuit_drawer\n", "import matplotlib.pyplot as plt\n", "from matplotlib.gridspec import GridSpec\n", "\n", "fig= plt.figure()\n", "\n", "gs = GridSpec(2, 3)\n", "\n", "ax1 = plt.subplot(gs[0, :])\n", "\n", "circ_fig = circuit_drawer(orig_circuit, output='mpl', ax=ax1)\n", "\n", "keys = {'00' : 0, '01' : 0, '10' : 0 , '11' : 0 }\n", "\n", "ax2 = plt.subplot(gs[1,0])\n", "ax2.set_ylim([0,1])\n", "ax2.title.set_text('Barrier 1')\n", "ax2_data = {**keys, **probability_1}\n", "ax2.bar(ax2_data.keys(), ax2_data.values())\n", "\n", "ax3 = plt.subplot(gs[1,1])\n", "ax3.set_ylim([0,1])\n", "ax3.set_yticks(())\n", "ax3.title.set_text('Barrier 2')\n", "ax3_data = {**keys, **probability_2}\n", "ax3.bar(ax3_data.keys(), ax3_data.values())\n", "\n", "ax4 = plt.subplot(gs[1,2])\n", "ax4.set_ylim([0,1])\n", "ax4.set_yticks(())\n", "ax4.title.set_text('Final state')\n", "ax4_data = {**keys, **probability_final}\n", "ax4.bar(ax4_data.keys(), ax4_data.values(), color='red')\n", "\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 4 }